﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Chilis.Proveedores.Web.ServiceProveedores;
using Chilis.Proveedores.Web.Models;

namespace Chilis.Proveedores.Web.Controllers
{
    public class ProveedorController : Controller
    {
        ProveedoresServiceClient cliente = new ProveedoresServiceClient();
        
        [HttpGet]
        public ActionResult Index()
        {
            return View();
        }

        [HttpGet]
        public ActionResult ConsultarPropuesta()
        {
            return View();
        }

        [HttpPost]
        public JsonResult BuscarPropuesta(string codigo, string nombre)
        {
            var resultado = cliente.SearchPropuesta(codigo, "", nombre);
            var retorno = Json(resultado);
            cliente.Close();

            return retorno;
        }

        [HttpGet]
        public ActionResult RegistrarPropuesta()
        {
            var modelo = new AgregarPropuestaModels();
            modelo.Convocatorias = (from c in cliente.GetConvocatorias()
                                    select new SelectListItem() { Text = c.Nombre, Value = c.IdConvocatoria.ToString() });

            return View(modelo);
        }

        [HttpPost]
        public JsonResult ConvocatoriaDatos(string codigo)
        {
            var Convocatoria = new ConvocatoriaModel();
            var ProveedoresPreSeleccionados = new List<SelectListItem>();
            if (!codigo.Equals(""))
            {
                var resultado = cliente.GetConvocatoriaById(int.Parse(codigo));
                Convocatoria.Codigo = resultado.Codigo;
                Convocatoria.FechaInicio = resultado.FechaCreacionString;
                Convocatoria.FechaFin = resultado.FechaFinString;
                Convocatoria.Requerimiento = resultado.Requerimiento;
                Convocatoria.RequiereVisita = resultado.Visita.Value ? "SI" : "NO";

                ProveedoresPreSeleccionados = (from c in cliente.GetProveedoresPreseleccionados(int.Parse(codigo))
                                               select new SelectListItem() { Text = c.NombreProveedor, Value = c.IdProveedor.ToString() }).ToList();

                cliente.Close();    
            }
            var retorno = Json(new { Convocatoria = Convocatoria, Proveedores = ProveedoresPreSeleccionados });
            
            return retorno;
        }

        [HttpPost]
        public JsonResult RegistrarConvocatoria(string NombrePropuesta, string Convocatoria, string Proveedor, string FechaPropuesta, string PrecioRespuesta, string CodigoPropuestaProveedor, string FechaPropuestaVisita, string Propuesta)
        {

            var respuesta = cliente.AddPropuesta(new PropuestaDTO() {
                                            IdPropuesta = 0,
                                            NombrePropuesta = NombrePropuesta,
                                            FechaPropuesta = FechaPropuesta.Equals("") ? default(DateTime) : DateTime.Parse(FechaPropuesta),
                                            Precio = Decimal.Parse("0" + PrecioRespuesta),
                                            CodigoProveedor = CodigoPropuestaProveedor,
                                            FechaVisita = FechaPropuestaVisita.Equals("") ? default(DateTime) : DateTime.Parse(FechaPropuestaVisita),
                                            Propuesta = Propuesta,
                                            Convocatoria = int.Parse("0" + Convocatoria),
                                            Preseleccionado = int.Parse("0" + Proveedor)
                                        });
            var retorno = Json(new { resultado = respuesta });
            return retorno;
        }
    }
}
